<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de consultation
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 2 || $GLOBALS['USER']['admin'])){

?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 0; $ordreBDD = "ASC"; break;
		}
	}else{
		$ordre = 0;
		$ordreBDD = "ASC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.",  variete ".$ordreBDD.", famille ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "classification ".$ordreBDD.", genre ".$ordreBDD.", espece ".$ordreBDD.", variete ".$ordreBDD.", famille ".$ordreBDD; break;
		default: $tri = 1; $triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", variete ".$ordreBDD.", famille ".$ordreBDD; break;
		}
	}else{
		$tri = 1;
		$triBDD = "genre ".$ordreBDD.", espece ".$ordreBDD.", variete ".$ordreBDD.", famille ".$ordreBDD;
	}
	
	// Traitement des options
	$opt_let = "all";
	
	if(isset($_GET['opt_let'])){
		if(mb_ereg("[a-z]", $_GET['opt_let'])){
			$opt_let = $_GET['opt_let'];
		}
	}
	
//------------------------------------------------------------ Récupération de la liste des taxons

	// On compte le nombre total de taxons enregistrés
	$nb_total_taxons = 0;
	
	$query_compte_taxons = "SELECT COUNT(t.CODETAXON) ";
	$query_compte_taxons .= "FROM taxon t ";
	$query_compte_taxons .= "INNER JOIN classification c ON c.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_compte_taxons .= "INNER JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE AND l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_compte_taxons .= "INNER JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE AND l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	if($opt_let != "all"){
		$query_compte_taxons .= "WHERE g.NOMGENRE LIKE '".$opt_let."%' ";	
	}
	$result_compte_taxons = mysql_query($query_compte_taxons, $connexion) or logError("COMPTE TAXONS-".$query_compte_taxons."-".mysql_error());
	
	$nb_total_taxons = mysql_result($result_compte_taxons,0);
	
	mysql_free_result($result_compte_taxons);
	
	// récupération des informations des taxons
	$query_recuperation_liste_taxons = "SELECT t.CODETAXON AS id, f.NOMFAMILLE AS famille, g.NOMGENRE AS genre, e.NOMESPECE AS espece, se.NOMSOUSESPECE AS sous_espece, v.NOMVARIETE AS variete, c.NOMCLASSIFICATION AS classification ";
	$query_recuperation_liste_taxons .= "FROM taxon t ";
	$query_recuperation_liste_taxons .= "INNER JOIN classification c ON c.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_taxons .= "INNER JOIN est_de_famille l1 INNER JOIN famille f ON f.CODEFAMILLE = l1.CODEFAMILLE AND l1.CODETAXON = t.CODETAXON AND l1.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_taxons .= "LEFT JOIN est_de_sous_famille l11 INNER JOIN sous_famille sf ON sf.CODESOUSFAMILLE = l11.CODESOUSFAMILLE ON l11.CODETAXON = t.CODETAXON AND l11.CODECLASSIFICATION = t.CODECLASSIFICATION ";
    $query_recuperation_liste_taxons .= "INNER JOIN appartient_a_genre l2 INNER JOIN genre g ON g.CODEGENRE = l2.CODEGENRE AND l2.CODETAXON = t.CODETAXON AND l2.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_taxons .= "LEFT JOIN appartient_a_sous_genre l22 INNER JOIN sous_genre sg ON sg.CODESOUSGENRE = l22.CODESOUSGENRE ON l22.CODETAXON = t.CODETAXON AND l22.CODECLASSIFICATION = t.CODECLASSIFICATION ";
    $query_recuperation_liste_taxons .= "INNER JOIN est_de_espece l3 INNER JOIN espece e ON e.CODEESPECE = l3.CODEESPECE AND l3.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	$query_recuperation_liste_taxons .= "LEFT JOIN est_de_sous_espece l33 INNER JOIN sous_espece se ON se.CODESOUSESPECE = l33.CODESOUSESPECE ON l33.CODETAXON = t.CODETAXON AND l3.CODECLASSIFICATION = t.CODECLASSIFICATION ";
    $query_recuperation_liste_taxons .= "LEFT JOIN a_comme_variete l4 INNER JOIN variete v ON v.CODEVARIETE = l4.CODEVARIETE ON l4.CODETAXON = t.CODETAXON AND l4.CODECLASSIFICATION = t.CODECLASSIFICATION ";
	if($opt_let != "all"){
		$query_recuperation_liste_taxons .= "WHERE g.NOMGENRE LIKE '".$opt_let."%' ";	
	}
	$query_recuperation_liste_taxons .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_taxons .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_taxons = mysql_query($query_recuperation_liste_taxons, $connexion) or logError("RECUPERATION LISTE TAXONS-".$query_recuperation_liste_taxons."-".mysql_error());
	
	$lst_taxons = array(); // on créé un tableau qui contient la liste des taxons ainsi que les informations de chacun
	$nb_taxons = 0;
	while($tab_recuperation_liste_taxons = mysql_fetch_assoc($result_recuperation_liste_taxons)){
	
		$lst_taxons[$nb_taxons] = $tab_recuperation_liste_taxons;
		$nb_taxons++;
		
	}
	
	mysql_free_result($result_recuperation_liste_taxons);

?>
<a name="liste"></a>
<h2>Liste des taxons</h2>

<?php  

   $tabth = array ('(Famille) Genre Espece <i>Variété</i>','Classification');
   
   for($i=0;$i<$nb_taxons;$i++){
   
      $tab_result[$i] = array (  htmlentities($lst_taxons[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 "(".htmlentities(capitalise($lst_taxons[$i]['famille']), ENT_NOQUOTES, "UTF-8").") <b>".htmlentities(capitalise($lst_taxons[$i]['genre']), ENT_NOQUOTES, "UTF-8")." ".htmlentities($lst_taxons[$i]['espece'], ENT_NOQUOTES, "UTF-8").($lst_taxons[$i]['sous_espece']?" ".htmlentities($lst_taxons[$i]['sous_espece'], ENT_COMPAT, "UTF-8"):"")."</b> <i>".htmlentities($lst_taxons[$i]['variete'], ENT_NOQUOTES, "UTF-8")."</i>",
                                 htmlentities($lst_taxons[$i]['classification'], ENT_NOQUOTES, "UTF-8") );
   
   }

   
   displayListe("taxon",700,$nb_total_taxons,$opt_let,'',1,'');

//------------------------------------------------------------ Accès refusé à la page

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>